﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dominio;

namespace Persistencia
{
    public class BrCuenta : Broker
    {
        public override void Agregar(OPersistente o)
        {
            Cuenta cuenta = (Cuenta)o;
            string sentencia = "INSERT INTO CUENTA (OID, USUARIO, BUZONENTRADA, BUZONSALIDA, NOMBRECUENTA, CONTRASENIA) VALUES (\'" + cuenta.Oid + "\', \'" +
                cuenta.Usuario.Oid + "\', \'" + cuenta.BuzonEntrada.Oid + "\', \'" + cuenta.BuzonSalida.Oid + "\', \'" +
                cuenta.NombreCuenta + "\', \'" + cuenta.Contrasenia + "\')";
            conexion.Ejecutar(sentencia);
        }

        public override void Modificar(OPersistente o)
        {
            //Cuenta cuenta = (Cuenta)o;
            //string sentencia = "UPDATE CUENTA SET FECHA_ENTREGA =\'" + cuenta.FechaEntrega.ToString() + "\' , CLIENTE =" + "\'" + cuenta.Cliente.Oid +
            //    "\' , PRODUCTO=\'" + cuenta.Producto.Oid + "\', COMPLETADO=" + cuenta.Completado.ToString() + ", CANT_UNIDADES_PEDIDAS=" + cuenta.CantUnidadesPedidas.ToString() + ", FECHA_COMPLETADO=\'" + cuenta.FechaCompletado.ToString() + "\' WHERE OID = \'" + cuenta.Oid + "\'";
            //conexion.Ejecutar(sentencia);
        }

        public override void Eliminar(OPersistente o)
        {
            Cuenta cuenta = (Cuenta)o;
            string sentencia = "UPDATE CUENTA SET ELIMINADA = True WHERE OID = \'" + cuenta.Oid + "\'";
            conexion.Ejecutar(sentencia);
        }

        public override void TraerDatos(OPersistente o)
        {
            Cuenta cuenta = (Cuenta)o;
            string sentencia = "SELECT * FROM CUENTA WHERE OID = \'" + cuenta.Oid + "\'";
            conexion.TraerDatos(sentencia);
            conexion.SiguienteRegistro();
            cuenta.Oid = conexion.ObtenerValor(0).ToString();
            Usuario usuario = new Usuario();
            usuario.Oid = conexion.ObtenerValor(1).ToString();
            cuenta.Usuario = usuario;
            Buzon buzonE = Buzon.CreateBuzonEntrada();
            buzonE.Oid = conexion.ObtenerValor(2).ToString();
            cuenta.BuzonEntrada = buzonE;
            Buzon buzonS = Buzon.CreateBuzonSalida();
            buzonS.Oid = conexion.ObtenerValor(3).ToString();
            cuenta.BuzonSalida = buzonS;
            cuenta.NombreCuenta = conexion.ObtenerValor(4).ToString();
            cuenta.Contrasenia = conexion.ObtenerValor(5).ToString();
            conexion.FinConsulta();
        }

        public override List<OPersistente> TraerLista(OPersistente o)
        {
            List<OPersistente> lista = new List<OPersistente>();
            Cuenta cuenta = (Cuenta)o;
            string sentencia = "SELECT * FROM CUENTA WHERE ELIMINADA = false";
            conexion.TraerDatos(sentencia);
            while (conexion.SiguienteRegistro())
            {
                cuenta = new Cuenta();
                cuenta.Oid = conexion.ObtenerValor(0).ToString();
                Usuario usuario = new Usuario();
                usuario.Oid = conexion.ObtenerValor(1).ToString();
                cuenta.Usuario = usuario;
                Buzon buzonE = Buzon.CreateBuzonEntrada();
                buzonE.Oid = conexion.ObtenerValor(2).ToString();
                cuenta.BuzonEntrada = buzonE;
                Buzon buzonS = Buzon.CreateBuzonSalida();
                buzonS.Oid = conexion.ObtenerValor(3).ToString();
                cuenta.BuzonSalida = buzonS;
                cuenta.NombreCuenta = conexion.ObtenerValor(4).ToString();
                cuenta.Contrasenia = conexion.ObtenerValor(5).ToString();
                lista.Add(cuenta);
            }
            conexion.FinConsulta();
            return lista;
        }
    }
}
